package com.ydd.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.ydd.dto.YddAdvposQueryDTO;
import com.ydd.entity.SysRoleMenu;
import com.ydd.entity.YddAdvimg;
import com.ydd.entity.YddAdvpos;
import com.ydd.entity.YddTag;
import com.ydd.mapper.YddAdvimgMapper;
import com.ydd.mapper.YddAdvposMapper;
import com.ydd.result.PageResult;
import com.ydd.service.YddAdvposService;
import com.ydd.vo.SysRoleQueryVO;
import com.ydd.vo.YddAdvposQueryVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
@Slf4j
public class YddAdvposServiceImpl implements YddAdvposService {
    @Autowired
    private YddAdvposMapper yddAdvposMapper;
    @Autowired
    private YddAdvimgMapper yddAdvimgMapper;

    /**
     * 广告位分页
     * @param yddAdvposQueryDTO
     * @return
     */
    @Override
    public PageResult page(YddAdvposQueryDTO yddAdvposQueryDTO) {
        //1.设置分页查询参数
        PageHelper.startPage(yddAdvposQueryDTO.getPage(),yddAdvposQueryDTO.getLimit());
        //2.调用yddTagMapper进行分页查询，添加条件为角色名模糊查询，返回tagList的集合
        Page<YddAdvpos> page=yddAdvposMapper.list(yddAdvposQueryDTO.getAdvposdesc(),yddAdvposQueryDTO.getAdvposname());
        List<YddAdvpos> advposList = page.getResult();
        List<YddAdvposQueryVO> yddAdvposQueryVOList =new ArrayList<>();
        for (YddAdvpos advpos : advposList) {
            List<YddAdvimg> advposnum=yddAdvimgMapper.getAdvimgposSum(advpos.getId());
            YddAdvposQueryVO yddAdvposQueryVO = new YddAdvposQueryVO();
            BeanUtils.copyProperties(advpos,yddAdvposQueryVO);
            yddAdvposQueryVO.setAdvposnum(advposnum.size());
            yddAdvposQueryVOList.add(yddAdvposQueryVO);

        }
        return PageResult.builder()
                .currentPage(yddAdvposQueryDTO.getPage())
                .data(yddAdvposQueryVOList)
                .pageSize(yddAdvposQueryDTO.getLimit())
                .totalPages(page.getPages())
                .count(page.getTotal())
                .build();
    }

    /**
     * 广告详情
     * @param id
     * @return
     */
    @Override
    public YddAdvpos getById(Integer id) {
        YddAdvpos yddAdvpos=yddAdvposMapper.getById(id);
        return yddAdvpos;
    }

    /**
     * 广告位添加
     * @param yddAdvpos
     */
    @Override
    public void add(YddAdvpos yddAdvpos) {
        yddAdvposMapper.add(yddAdvpos.getAdvposname(),yddAdvpos.getAdvposdesc(),yddAdvpos.getAdvpossize());
    }

    /**
     * 广告位-全部
     * @return
     */
    @Override
    public List<YddAdvpos> all() {
        List<YddAdvpos> yddAdvposList=yddAdvposMapper.all();
        return yddAdvposList;
    }

    /**
     * 广告位修改
     * @param yddAdvpos
     */
    @Override
    public void update(YddAdvpos yddAdvpos) {
        yddAdvposMapper.update(yddAdvpos.getId(),yddAdvpos.getAdvposname(),yddAdvpos.getAdvposdesc(),yddAdvpos.getAdvpossize());
    }

    /**
     * 广告位删除
     * @param id
     */
    @Override
    public void delete(Integer id) {
        yddAdvposMapper.delete(id);
    }
}
